package thread;

/**
 * 守护线程:
 * 守护线程又称为后台线程，守护线程是通过普通的线程调用setDaemon(true)设置而转变来的。因此线程
 * 定义和创建与普通线程一致。
 *
 * 守护线程在结束时机上有一点于普通线程不同:  进程的结束。
 *
 * 进程的结束:
 * 当一个Java进程中的所有普通线程都结束时，该线程就会结束，此时会强制刺杀所有正在运行的守护线程。
 *
 */
public class DaemonThreadDemo {
    public static void main(String[] args) {
        /** 普通的线程调用setDaemon(true)设置 */
        //setDaemon(true)必须在线程start()启动之前调用，否则抛出异常.

        Thread luo = new Thread(){
            public void run(){
                for(int i=0;i<5;i++){
                    System.out.println("rose：let me go！");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                }
                System.out.println("rose: 吨吨吨....");
                System.out.println("我死了~");
            }
        };
        Thread zu = new Thread(){
            public void run(){
                while (true){
                    System.out.println("zuliye:nonononononono...");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                    System.out.println("你死了吗~");
                }
            }
        };
//        luo.interrupt();//中断
        luo.start();

        zu.setDaemon(true);//会强制刺杀所有正在运行的守护线程
        zu.start();


    }
}
